1. Technical Field
This invention generally relates to computer systems, and more specifically relates to the processing of Direct Memory Access (DMA) requests in computer systems.
2. Background Art
Modem computer systems typically have memory that is organized into pages. Moving pages of memory in a computer system is an important maintenance item that helps provide optimal performance and keeps the computer system functional. Pages of memory are typically moved by invalidating a current virtual-to-physical address map entry in an address translation table, copying the page from the old physical location to the new physical location, and adding a new address map entry into the address translation table that has the old virtual address linked to the new physical address.
Direct Memory Access (DMA) operations may be initiated by I/O devices to directly transfer data to and from memory. A DMA operation that occurs during the copying of a memory page could potentially cause data coherency problems. For example, let's assume a memory controller decides to move a page of memory from location A to location B in memory. In the prior art, it is possible for the DMA controller to write to block A before the move from block A to block B is complete. If the write to block A occurs at a location that has already been copied to block B, block B now has stale data, which can result in a system crash.
One known way to solve the data coherency problem that might be caused by DMA operations is to disable DMA operations during page copies. In some system topologies, it is difficult or impossible for the hardware to halt DMA operations without causing the system to crash. Even if DMA operations could be halted, there are business applications where halting DMA operations would result in unacceptable response times. Thus, if a memory manager is performing a move of data from a first page to a second page, the DMA controller could access data in the first page after that portion of the first page was already moved, resulting in a data coherency problem. Without a way to assure data coherency in a computer system that includes a DMA controller without halting the DMA I/O operations during a page copy operation, the computer industry will continue to suffer from potential crashes and other problems due to data coherency problems caused by DMA operations.